package br.com.bancoeXtreme.tratadoresxml;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/** 
 * 
 * @author Fernando, Haron e Thiago
 * @version 1.0
 * @since Release 01
*/

public class TrataExtrato extends DefaultHandler {
	
	private String tag = "";
	private String dataTransacao = "";
	private String tipo = "";
	private String numeroAgenciaDeste = "";
	private String numeroContaDeste = "";
	private String dataInicioExtrato = "";
	private String dataFimExtrato = "";

	public TrataExtrato(File file) {
		SAXParserFactory spf = SAXParserFactory.newInstance();
		SAXParser parser = null;
		
		try {
			parser = spf.newSAXParser();
			parser.parse(file,this);
			
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
	}
	
	public void startDocument() {
		//System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
	}
	
	public void endDocument() {
		
		//System.out.println("</xml>");
	}
	
	public void startElement(String uri, String localName, String tag, Attributes atributos ){
	//	System.out.println("<"+tag+">");
		
		this.tag = tag;
		
	}
	
	public void endElement(String uri, String localName, String tag){
		//System.out.println("</"+tag+"> ");
		this.tag = "";
		
		
	}
	
	public void characters(char ch[], int start, int lenght) {
		String tmp = new String(ch,start,lenght);
		
		if(this.tag.equals("dataTransacao")) {
		//	System.out.println(tmp);
			this.dataTransacao = tmp;
			tmp = "";
			this.tag = "";
		} else if(this.tag.equals("tipo")) {
			//System.out.println(tmp);
			this.tipo = tmp;
			tmp = "";
			this.tag = "";
		} else if(this.tag.equals("numeroAgenciaDesteCliente")) {
			//System.out.println(tmp);
			this.numeroAgenciaDeste = tmp;
			tmp = "";
			this.tag = "";
		} else if(this.tag.equals("numeroContaDesteCliente")) {
			//System.out.println(tmp);
			this.numeroContaDeste = tmp;
			tmp = "";
			this.tag = "";
		} else if(this.tag.equals("dataInicioExtrato")) {
			//System.out.println(tmp);
			this.dataInicioExtrato = tmp;
			tmp = "";
			this.tag = "";
		} else if(this.tag.equals("dataFimExtrato")) {
			//System.out.println(tmp);
			this.dataFimExtrato = tmp;
			tmp = "";
			this.tag = "";
		}
		
		
	}
	
	public void printExtrato() {
		System.out.println("Data Transacao: "+this.dataTransacao);
		System.out.println("Tipo: "+this.tipo);
		System.out.println("Numero Agencia Deste: "+this.numeroAgenciaDeste);
		System.out.println("Numero Conta Deste: "+ this.numeroContaDeste);
		System.out.println("Data Inicio Extrato: "+this.dataInicioExtrato);
		System.out.println("Data Fim Extrato: "+this.dataFimExtrato);
	
	}
	
	
	
	public String getTag() {
		return tag;
	}

	public void setTag(String tag) {
		this.tag = tag;
	}

	public String getDataTransacao() {
		return dataTransacao;
	}

	public void setDataTransacao(String dataTransacao) {
		this.dataTransacao = dataTransacao;
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public String getNumeroAgenciaDeste() {
		return numeroAgenciaDeste;
	}

	public void setNumeroAgenciaDeste(String numeroAgenciaDeste) {
		this.numeroAgenciaDeste = numeroAgenciaDeste;
	}

	public String getNumeroContaDeste() {
		return numeroContaDeste;
	}

	public void setNumeroContaDeste(String numeroContaDeste) {
		this.numeroContaDeste = numeroContaDeste;
	}

	public String getDataInicioExtrato() {
		return dataInicioExtrato;
	}

	public void setDataInicioExtrato(String dataInicioExtrato) {
		this.dataInicioExtrato = dataInicioExtrato;
	}

	public String getDataFimExtrato() {
		return dataFimExtrato;
	}

	public void setDataFimExtrato(String dataFimExtrato) {
		this.dataFimExtrato = dataFimExtrato;
	}

	public static void main(String[] args) {
		//File file = new File("C:/Users/thiago/Documents/Meus arquivos recebidos/Out/transacao_extrato_por_periodo_cliente.xml");
		//TrataExtrato te = new TrataExtrato(file);
		//te.printExtrato();

	}

}
